﻿// -----------------------------------------------------------------------
// <copyright file="Consulta.cs" company="">
// TODO: Update copyright text.
// </copyright>
// -----------------------------------------------------------------------

using System.ComponentModel.Composition;
using System.Text.RegularExpressions;
using TPTecnicas.MessageProcessor.Business;

namespace TPTecnicas.MessageProcessor.Rules
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using TPTecnicas.MessageProcessor.Common;

    /// <summary>
    /// TODO: Update summary.
    /// </summary>
    public abstract class Consulta : Rule
    {
        [ImportingConstructor]
        protected Consulta([Import("context")]IUniversityContext context)
            : base(context)
        {

        }

        public override void ApplyTo(IMessage message)
        {
            var match = GetMatch(message);

            if (match.Success)
            {
                if (!Context.StudentRepository.Registrado(message.Sender))
                    throw new ApplicationException("Debe darse de alta primero.");

                Notify(message);
            }

            if (message.Subject.Contains("CONSULTA"))
            {
                //TODO
                //Sería útil, tener alguna estadistica de cuantos mails son recibidos y no matchean a una regla 
                //por lo que son rebotados, como para mejorar la regla o la explicación de la misma
            }

        }



        protected override Match GetMatch(IMessage message)
        {
            throw new NotImplementedException();
        }
    }
}
